home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 426-450 / disk_436 / memguard / memguard.doc < prev    next >
Text File  |  1992-05-06  |  7KB  |  162 lines

  1. ============================= MemGuard IV.00 ===========================
  2. ========================================================================
  3.  
  4. Was  written  by  Ralf  Thanner in 100% assembly language!  This release
  5. fixes  some  disadvantages  encountered  with  the  original MemWatch II
  6. program written by John Toebes.
  7.  
  8. ================================ Purpose ===============================
  9. ========================================================================
  10.  
  11. MemGuard  IV  checks  the  first  100  longwords, in particular location
  12. $00000004,  for  random trashing.  Discovering any change an Alert comes
  13. up  giving you the choice to leave the vectors as they are or to restore
  14. their  original  contents.   Unlike other tools of this kind MemGuard IV
  15. does  not  run  as  task,  but  rather  links itself to the level 3 IRQ,
  16. checking the vectors each frame.  Therefore virtually no processing time
  17. is wasted, no extra memory is used (very little actually, but below 1000
  18. bytes  - the original MemWatch II needed about 4000 bytes while running)
  19. and  the  checking  takes  place even while task-switching is forbidden.
  20. Furthermore  most  actions  overriding  the  vector table are discovered
  21. almost instantly.
  22.  
  23. MemGuard IV is NOT a virus killer but a usefull tool for 'C' Freaks.  If
  24. an  opening of a structure failed and you don't check this, your program
  25. starts  writing  random  data  to location $0.  In most cases your Amiga
  26. will crash after this action.
  27.  
  28. ================================= Usage ================================
  29. ========================================================================
  30.  
  31. MemGuard  IV  can be started both from Workbench and CLI.  The following
  32. options are recognized:
  33.  
  34.     "A" -> Activate MemGuard IV 
  35.     "Q" -> Terminate MemGuard IV 
  36.     "?" -> Displays a short list of instructions
  37.  
  38. Note that these options are available from Workbench, too.  A small menu
  39. will pop up and ask you for a selection.
  40.  
  41. ============================= How it works =============================
  42. ========================================================================
  43.  
  44. MemGuard  IV  allocates  a  chunk of memory, copies the checking routine
  45. into it, links it to the Vertical Blank interrupt and exits.  As soon as
  46. an  application  trashes  a  low-memory vector an alert of the following
  47. form comes up:
  48.  
  49.  #====================================================================#
  50.  #                                                                    #
  51.  #                MemGuard IV.00  (C) 1990 by Ralf Thanner            #
  52.  #                                                                    #
  53.  #  Adress: $xxxx    OLD: xxxxxxxx    NEW: xxxxxxx    ASCII: 'xxxx'   #
  54.  #                                                                    #
  55.  #  LEFT BUTTON TO CORRECT               RIGHT BUTTON TO SAVE CHANGE  #
  56.  #====================================================================#
  57.  
  58.  -> 'ADRESS'    displays the address having been overwritten.
  59.  -> 'OLD'    means the old value of the adress.
  60.  -> 'NEW'    gives the  value  it  has  received.
  61.  -> 'ASCII'    gives the ASCII text of the new value.
  62.  
  63.  - Pressing  the  left mouse button will restore the original contents
  64.    of the trashed location.
  65.  
  66.  - Pressing the right mouse button will leave the location as it is.
  67.  
  68. ================================= Author ===============================
  69. ========================================================================
  70.  
  71. MemGuard  IV  was written by Ralf Thanner using the Kuma Seka assembler,
  72. the original MemWatch idea was suggested from MemWatch II which had some
  73. substancial disadvantages.
  74.  
  75.                                Ralf Thanner
  76.                              Ellerstrasse  83
  77.                            D-4000 Duesseldorf 1
  78.  
  79.                         Federal Republic of Germany
  80.  
  81.               MemGuard IV (C) Copyright 1990 by Ralf Thanner
  82.  
  83.              Special thanks go to Olaf Barthel & Thorsten Hopf
  84.  
  85. VERSIONS:
  86. =========
  87.  
  88.     - MemGuard III
  89.       ------------
  90.  
  91.       Thought that this was the final version...
  92.       No bug reports.
  93.  
  94.     - MemGuard III.a
  95.       --------------
  96.           Because  the  MemGuard level3 IRQ part uses no message
  97.           ports  (  would  slow  down  the  everything  ) I took
  98.           530(a6)  as  my `port'.  The bad thing is that 530(a6)
  99.           is  the  vertical  blank  frequency and programs which
  100.           check  this  pointer  had  problems  to interprete the
  101.           value  (PAL  /  NTSC).   I  had to switch to debug dat
  102.           (70(a6))  which  is  currently  not  assigned  to  any
  103.           particular function.
  104.  
  105.       Also added a cuter CLI-Interface.
  106.  
  107.       Shortened and improved the check routine:
  108.        - now needs less than 896 bytes of memory.
  109.        - takes only about 2-3 percent of processing
  110.          time. (Memwatch II took about 50%)
  111.  
  112.     - MemGuard III.c
  113.       --------------
  114.           As  more  and  more Amiga users have an 68020 or 68030
  115.           which permit to relocate the IRQ vector table MemGuard
  116.           was  extended  to  check  the  exact  location  before
  117.           actually redirecting the level 3 IRQ vector.
  118.  
  119.     - MemGuard III.d
  120.       --------------
  121.  
  122.       Extended the `trash' display.
  123.  
  124.       Shortened code and reprogrammed the checking routine:
  125.  
  126.        - Checking routine has become 924 bytes long and needs 8
  127.              raster lines.  (MemGuard III.a needed 11 lines!!)
  128.  
  129.        - The exec.library vector is buffered internally to help
  130.              MemGuard  to  survive a fatal change in $4.  Thanks go
  131.              to Holger Lubitz for this clever idea.
  132.  
  133.     - MemGuard IV.00
  134.       --------------
  135.           - Fat  bug  removed:   the  task  running while MemGuard
  136.             displayed  the  low  memory  change  would  freeze and
  137.             finally   hang  (another  nice  feature  of  the  task
  138.             scheduler).
  139.  
  140.           - Integrated a low level task to display the alert.
  141.  
  142.           - Better Shell parameter check, will also handle tabs.
  143.  
  144. ===============================  MemGuard  ================================
  145.  
  146. IMPORTANT  NOTICE:   This Program Is (c) Copyright By Ralf Thanner, But Can
  147. Be Freely Distributed, Providing That The Following Rules Are Respected.
  148.  
  149.   - No  Change Is Made To The Program Nor To The Accompaning Documentation
  150.  
  151.   - The  Package  Is Always Distributed In Its Complete Form Consisting Of
  152.     2 Files:  'MemGuard'  And 'MemGuard.Doc'.
  153.  
  154.   - Every  Form  Of Distribution Is Allowed And Encouraged, But No Fee Can
  155.     Be Charged For This Program Except For, Possibly, The Cost Of Magnetic
  156.     Media.
  157.  
  158. By  Copying,  Distributing  And/Or  Using  The  Program  You  Indicate Your
  159. Acceptance Of The Above Rules.
  160.  
  161. ============================================================================
  162.